<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // 闭包实现单例模式
    // const createObj = (function(){
    //     const obj = {};
    //     return function (n){
    //         obj.name = n;
    //         return obj;
    //     }
    // })();
    // const o1 = createObj("admin");
    // console.log(o1);
    // const o2 = createObj("root");
    // console.log(o2);
    // console.log(o1 === o2);

    function createObj(n){
        // 判断函数身上是否具有自定义属性，如果没有，那就创建，如果有，跳过
        if(!createObj.obj){
            // 原料
            createObj.obj = {};
        }
        // 加工
        createObj.obj.name = n;
        // 出厂
        return createObj.obj;
    }

    const o1 = new createObj("admin");
    console.log(o1);
    const o2 = new createObj("root");
    console.log(o2);
    console.log(o1 === o2);

    // new的原理
    // 1. 创建新对象
    // 2. 
    // 3. 
    // 4. 
    // 5. 检测原函数是否主动返回对象，如果没有，返回这个新对象

    
</script>
</html>